Skip to content

CommentArtalk 评论区

使用 Artalk 快速搭建一个评论区。

基础使用

ts
import DefaultTheme from "vitepress/theme";
import { TkCommentArtalk, teekConfigContext } from "vitepress-theme-teek";
import { h } from "vue";

provide(teekConfigContext, {
  comment: {
    options: {
      // artalk 配置,官网:https://artalk.js.org/
      server: "https://vp.teek.top",
      site: "Teek Site",
    },
  },
});

export default {
  extends: DefaultTheme,
  Layout: () =>
    h(DefaultTheme.Layout, null, {
      "doc-after": () => h(TkCommentArtalk),
    }),
};

实例注入

通过配置项 server,Teek 内部会自动创建一个 Artalk 实例,当然您也可以手动注入示例:

首先您需要安装 Artalk 依赖:

bash
pnpm add -D artalk

然后引入:

ts
import DefaultTheme from "vitepress/theme";
import { TkCommentArtalk, teekConfigContext, artalkContext } from "vitepress-theme-teek";
import "vitepress-theme-teek/theme-chalk/tk-comment-artalk.css";
import { h } from "vue";
import { useData, useRoute } from "vitepress";
import Artalk from "artalk";
import "artalk/Artalk.css";

export default {
  extends: DefaultTheme,
  Layout: defineComponent({
    name: "LayoutProvider",
    setup() {
      const { isDark, page } = useData();
      const route = useRoute();

      provide(teekConfigContext, {
        comment: {
          options: {
            // artalk 配置,官网:https://artalk.js.org/
            server: "https://vp.teek.top",
            site: "Teek Site",
          },
        },
      });

      // options 为 `provide(teekConfigContext, {})` 的内容
      provide(artalkContext, (el, options) =>
        Artalk.init({
          el,
          darkMode: isDark.value,
          pageKey: route.path,
          pageTitle: page.value.title,
          server: options.server,
          site: options.site,
        })
      );

      return () =>
        h(DefaultTheme.Layout, null, {
          "doc-after": () => h(TkCommentArtalk),
        });
    },
  }),
};

手动创建实例会更灵活,您可以随意操控实例的样子。

最近更新